{% extends "base.html" %}
{% block content %}
{% load static %}
<link href="{% static 'css/port_scan.css' %}" type="text/css" rel='stylesheet' />

<div class="dev_body">
    <h1 class="mt-4" style="text-align:center ; line-height:25px;">socket端口扫描</h1>
    <h7 style="text-align:cente ; color:#ADADAD ;">基于asyncio协程异步的socket端口扫描方式</h7>
    <form method="post" style="line-height:40px" id="portform">  <!--action="href"-->
    {% csrf_token %}
    <table class="table table-hover" style="margin-top:10px">
      <thead style="text-align:center"><tr class="table-primary">
          <th scope="col" width="10%">ID</th>
          <th scope="col">IP地址</th>
          <th scope="col">主机名</th>
          <th scope="col">厂商</th>
          <th scope="col" width="10%">单选</th>
          <th scope="col" width="10%">多选</th>
      </tr></thead>
      <tbody style="text-align:center ; line-height:40px">
      {% for device in Devices %}
          <tr class="table-info">
          <td>{{device.id}}</td>
          <td>{{device.ip_address}}</td>
          <td>{{device.hostname}}</td>
          <td>{{device.vendor}}</td>
          <td>
<!--              <input type="hidden" name="choice" value="{{device.ip_address}}">使用input方法会导致for循环内传参有误，单button即可-->
              <button type="submit" name="choice" value="{{device.ip_address}}" class="btn btn-outline-primary">扫描</button>
<!--              <a type="submit" class="btn btn-outline-primary" href="http://127.0.0.1:8000/scan/{{device.id}}">扫描</a>-->
          </td>
          <td>
            <div class="form-check form-switch" style="margin-left:30%">
                <input class="form-check-input" type="checkbox" role="switch" id="flexSwitchCheckDefault" name="pick" value="{{ device.ip_address }}" style="margin-top:50%">
                <label class="form-check-label" for="flexSwitchCheckDefault"></label>
            </div>
          </td>
        </tr>
      {% endfor %}
        <tr class="table-info">
            <th>端口号</th>
                <th colspan="4"><input type="text" class="form-control" name="port" value="{{port}}"></th>
            <th></th>
        </tr>
      </tbody>
    </table>
    </form>
        <div class="button">
            <button type="submit" name="all_choice" value="All" class="btn btn-primary" form="portform">全局扫描</button>
            <button type="submit" name="choice" value="multiple_choice" class="btn btn-primary" form="portform">开始扫描</button>
        </div>
</div>

<br><br><br>
<pre class="text1">端口号的范围是从1～65535。其中1～1024是被RFC 3232规定好了的，被称作“众所周知的端口”(Well Known Ports)；从1025～65535的端口被称为动态端口（Dynamic Ports），可用来建立与其它主机的会话，也可由用户自定义用途。
一些常见的端口号及其用途如下：
21端口：FTP 文件传输服务
22端口：SSH 端口
23端口：TELNET 终端仿真服务
25端口：SMTP 简单邮件传输服务
53端口：DNS 域名解析服务
80端口：HTTP 超文本传输服务
110端口：POP3 “邮局协议版本3”使用的端口
443端口：HTTPS 加密的超文本传输服务
1433端口：MS SQL*SERVER数据库 默认端口号
1521端口：Oracle数据库服务
1863端口：MSN Messenger的文件传输功能所使用的端口
3306端口：MYSQL 默认端口号
3389端口：Microsoft RDP 微软远程桌面使用的端口
5631端口：Symantec pcAnywhere 远程控制数据传输时使用的端口
5632端口：Symantec pcAnywhere 主控端扫描被控端时使用的端口
5000端口：MS SQL Server使用的端口
8000端口：腾讯QQ
</pre>
<br><br>


{% endblock %}